iT邦幫忙

2025 iThome 鐵人賽

DAY 18
0
生成式 AI

AI 給我錢錢錢 ! AI 股神養成計劃系列 第 18

Day 18: 股市看不懂?來點 AI 繪圖,圖表一秒出爐

  • 分享至 

  • xImage
  •  

在投資的世界裡,有一句話叫做 「一圖勝千言」

每天股市新聞與數據量龐大,如果只是單純看表格或文字,常常會陷入「看得懂每個數字,卻抓不到整體趨勢」的困境。

這時候,就該讓 AI 來幫我們 自動生成圖表,把複雜的數據轉換成直觀的線條圖並讓 AI 來幫我們解讀。

AI 繪圖的好處

  1. 趨勢一眼看出:不用逐筆數字比較,直接看到股價的漲跌走勢。

  2. 多維度整合:股價、成交量、技術指標(如 RSI、MACD)都能同時放在一張圖上。

  3. 自動更新:不必每天手動整理 Excel,只要一鍵呼叫程式,圖表就能即時生成。

  4. 減少誤讀:數字看錯很常見,但圖像化能降低誤判的機率。

實作

取得股價資料 (用 yfinance)

python
import yfinance as yf
import pandas as pd

# 下載台積電 (2330.TW) 的股價
ticker = "2330.TW"
data = yf.download(ticker, start="2024-01-01", end="2024-08-01")

print(data.head())

執行結果:

https://ithelp.ithome.com.tw/upload/images/20250828/201694445t9cLUFXFN.png

畫出股價圖表 (K 線 + 移動平均 + 成交量)

在這之前因為要在圖表上有繁體中文,避免像我多次嘗試都是方框框,所以要先去 notofonts 的 github 下載字體,並且上傳到資料裡。

推薦的字體下載區

python
import yfinance as yf
import mplfinance as mpf
import matplotlib.pyplot as plt
from matplotlib import font_manager

# === 指定字體 ===
my_font = font_manager.FontProperties(fname="NotoSerifCJKtc-Regular.otf")

# === 抓取台積電股價 ===
ticker = "2330.TW"
tsmc = yf.Ticker(ticker)
data = tsmc.history(period="6mo")

# === 計算均線 ===
data['MA20'] = data['Close'].rolling(window=20).mean()
data['MA60'] = data['Close'].rolling(window=60).mean()

# === 畫 K 線圖,回傳 fig 和 axes ===
fig, axes = mpf.plot(
    data,
    type='candle',
    mav=(20, 60),
    volume=True,
    style="yahoo",
    returnfig=True
)

# === 手動加標題(確保用中文字體) ===
axes[0].set_title(f"{ticker} 股價走勢", fontproperties=my_font)

plt.show()

執行結果:

https://ithelp.ithome.com.tw/upload/images/20250829/201694448rYqadzVMr.png

AI 幫你解讀圖表

圖畫出來了,但對新手來說還是「一堆線」。
這時候就要讓 AI 來說人話!

我們把數據摘要整理,再丟給 Gemini 分析:

python

!pip install -q ta

import google.generativeai as genai
import yfinance as yf
import pandas as pd
import ta

# 設定 Gemini
genai.configure(api_key="YOUR_GEMINI_API_KEY")
model = genai.GenerativeModel("gemini-2.5-flash")

# === 抓取台積電股價 ===
ticker = "2330.TW"
tsmc = yf.Ticker(ticker)
data = tsmc.history(period="6mo")

# === 計算均線 ===
data['MA20'] = data['Close'].rolling(window=20).mean()
data['MA60'] = data['Close'].rolling(window=60).mean()


# 取近期數據摘要
recent_data = data.tail(30)[['Close', 'MA20', 'MA60']]

# 組成提示詞
prompt = f"""
以下是台積電最近 30 天的股價數據 (收盤價、20 日均線、60 日均線):
{recent_data.to_string()}

請用投資新手聽得懂的方式,解讀股價趨勢:
1. 最近股價是否突破均線?
2. 是否有支撐/壓力跡象?
3. 簡單給一個小結論。
"""

response = model.generate_content(prompt)
print(response.text)

執行結果:

https://ithelp.ithome.com.tw/upload/images/20250829/20169444lgjYbbTD0K.png

結語

今天我們學會用 yfinance 下載股價,接著使用 mplfinance 畫 K 線 + 均線 + 成交量,最後再用 Gemini 解讀趨勢,讓圖表「會說話」,整合所有資訊。

👉 明天(Day 19),既然已經能畫出單一股票的圖表,那麼下一步,就是一次性追蹤多家公司!
明天我們會示範如何讓 AI 幫你整理多檔股票的數據,並自動生成報告,省去你逐檔查資料的麻煩。


上一篇
Day 17: 說人話吧!讓 AI 幫你自動加註解、寫摘要
下一篇
Day 19 : 一鍵多股!一次追蹤多家公司投資報告
系列文
AI 給我錢錢錢 ! AI 股神養成計劃20
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言